// 这里使用模版模式来创建 UCP 和 TCP 
// Socket 使用的是继承和多态
// 所以这里多态实现必须是基类的指针或引用调用指向子类就可以找到具体的子类 

#include <iostream>
#include "Socket.hpp"
#include <memory>
using namespace SocketModel;


// 这样对外面使用来说 , 不关心具体的 , 只用指向就行
// 实现面向对象 
int main()
{

    /// 就像有一个模版一样 , 创建不同的协议都是一样的调用

    //创建 Socket 对象 , 基类的指针指向 TCP 这个子类 , 实现多态 
    std::unique_ptr<Socket> tcp = std::make_unique<TCP>(); 
    tcp->SocketOrDie();
    tcp->BindOrDie(); 
    std::cout << "-------------------------" << std::endl;

    //创建 Socket 对象 , 基类的指针指向 UDP 这个子类 , 实现多态 
    std::unique_ptr<Socket> udp = std::make_unique<UDP>(); 
    udp->SocketOrDie();
    udp->BindOrDie(); 


    return 0 ;
}